package cho10;

/**
 * Created by 春旺 on 2017/4/21.
 */
//********************************************************************
// ExceptionScope.java Java Foundations
//
// Demonstrates exception propagation.
//********************************************************************
public class ExceptionScope
{
    //-----------------------------------------------------------------
// Catches and handles the exception that is thrown in level3.
//-----------------------------------------------------------------
    public void level1()
    {
        System.out.println("Level 1 beginning.");
        try
        {
            level2();
        }
        catch (ArithmeticException problem)
        {
            System.out.println ();
            System.out.println ("The exception message is: " +
                    problem.getMessage());
            System.out.println ();
            System.out.println ("The call stack trace:");
            problem.printStackTrace();
            System.out.println ();
        }
        System.out.println("Level 1 ending.");
    }
    //-----------------------------------------------------------------
// Serves as an intermediate level. The exception propagates
// through this method back to level1.
//-----------------------------------------------------------------
    public void level2()
    {
        System.out.println("Level 2 beginning.");
        level3 ();
        System.out.println("Level 2 ending.");
    }
    //-----------------------------------------------------------------
// Performs a calculation to produce an exception. It is not
// caught and handled at this level.
//-----------------------------------------------------------------
    public void level3 ()
    {
        int numerator = 10, denominator = 0;
        System.out.println("Level 3 beginning.");
        int result = numerator / denominator;
        System.out.println("Level 3 ending.");
    }
}
